package shm.excepciones;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import shm.capaDatos.vo.PersonaVO;

public class EntidadesHuerfanasException extends Exception {
	private static final long serialVersionUID = 1L;
	private String mensaje;
	private List<Object> entidadesHuerfanas;
	private EliminarEntidadException segundaExcepcion;
	public EntidadesHuerfanasException(String mensaje){
		entidadesHuerfanas = new ArrayList<Object>();
		this.mensaje = mensaje;
		segundaExcepcion = null;

	}
	public void agregarEntidad(Object entidad){
		if(entidad.getClass().equals(PersonaVO.class)){
			if(!personaIncluida((PersonaVO) entidad)){
				entidadesHuerfanas.add(entidad);
			}
		}else{
			entidadesHuerfanas.add(entidad);
		}
	}
	private boolean personaIncluida(PersonaVO persona) {
		boolean incluida = false;
		Iterator<Object> i = entidadesHuerfanas.iterator();
		while(i.hasNext()&& !incluida){
			Object entidadE = i.next();
			if(entidadE.getClass().equals(PersonaVO.class)){
				PersonaVO personaE = (PersonaVO) entidadE;
				Integer idH = personaE.getIdHistorico();
				if(idH != null){
					if(idH.equals(persona.getIdHistorico())){
						incluida = true;
					}
				}
			}
		}
		return incluida;
	}
	public List<Object> getEntidadesHuerfanas(){
		return entidadesHuerfanas;
	}
	public Integer cantidadEntidadesHuerfanas(){
		return entidadesHuerfanas.size();
	}

	public String getMensaje() {
		return mensaje;
	}
	public EliminarEntidadException getSegundaExcepcion() {
		return segundaExcepcion;
	}
	public void setSegundaExcepcion(EliminarEntidadException segundaExcepcion) {
		this.segundaExcepcion = segundaExcepcion;
	}
}